Notes and Setup

This is an initial attemmt at compiling the data. Future work includes: 1. Developing more rigorous QAQC procedures 2. Implimenting said procedures 3. Increasing the spead of the database upload…[right now it took over 7.5 hours!]

Water Level QAQC

NB Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

JB Upland Well 1

This is preliminary data and will undergo more rigurous QAQC at a later date.

JB Upland Well 2

This is preliminary data and will undergo more rigurous QAQC at a later date.

JB Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

JC Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

JC Upland Well 1

This is preliminary data and will undergo more rigurous QAQC at a later date.

JA Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

Jones Road North Catchment Outlet

This is preliminary data and will undergo more rigurous QAQC at a later date.

DV Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

Denver Catchment Outlet

This is preliminary data and will undergo more rigurous QAQC at a later date.

GB Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

JU Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

TI Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

Solute Catchment Outlet

This is preliminary data and will undergo more rigurous QAQC at a later date.

SB Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

DF Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

QB Upland Well 2

This is preliminary data and will undergo more rigurous QAQC at a later date.

QB Wetland Well Deep

This is preliminary data and will undergo more rigurous QAQC at a later date.

QB Wetland Well Shallow

This is preliminary data and will undergo more rigurous QAQC at a later date.

QB Upland Well 1

This is preliminary data and will undergo more rigurous QAQC at a later date.

Database Import

Time difference of 5.664347 mins
LS0tCnRpdGxlOiAiSmFuIDEyLCAyMDE4IERhdGEgRG93bmxvYWQgJiBQcm9jZXNzaW5nIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB5ZXMKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwotLS0KCiNOb3RlcyBhbmQgU2V0dXAKClRoaXMgaXMgYW4gaW5pdGlhbCBhdHRlbW10IGF0IGNvbXBpbGluZyB0aGUgZGF0YS4gIEZ1dHVyZSB3b3JrIGluY2x1ZGVzOgoxLiAgRGV2ZWxvcGluZyBtb3JlIHJpZ29yb3VzIFFBUUMgcHJvY2VkdXJlcwoyLiAgSW1wbGltZW50aW5nIHNhaWQgcHJvY2VkdXJlcwozLiAgSW5jcmVhc2luZyB0aGUgc3BlYWQgb2YgdGhlIGRhdGFiYXNlIHVwbG9hZC4uLltyaWdodCBub3cgaXQgdG9vayBvdmVyIDcuNSBob3VycyFdCgoKYGBge3Igc2V0dXAsIGVjaG89RkFMU0UsIHJlc3VsdHM9ImhpZGUiLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQojQ2xlYXIgTWVtb3J5CnJtKGxpc3Q9bHMoYWxsPVRSVUUpKQoKI0xvYWQgUmVxdWlyZWQgUGFja2FnZXMKbGlicmFyeShkcGx5cikgICAKbGlicmFyeShkZXZ0b29scykKbGlicmFyeShSU1FMaXRlKQpsaWJyYXJ5KERCSSkKbGlicmFyeSh4dHMpCmxpYnJhcnkoZHlncmFwaHMpCmxpYnJhcnkoUlBvc3RncmVTUUwpCgojTG9hZCBQYWxtZXIgTGFiIHRvb2xzCnNvdXJjZSgifi9wcmVzc3VyZV90cmFuc2R1Y2Vycy9kYl9nZXRfd2F0ZXJfbGV2ZWxfdHMuUiIpCmRldnRvb2xzOjppbnN0YWxsX2dpdGh1YihyZXBvPSJyb2RtMiIsdXNlcm5hbWU9Imtob25kdWxhIiwgcXVpZXQgPSBGKQpsaWJyYXJ5KHJvZG0yKQoKI0RlZmluZSB3b3JraW5nIGRpcmVjdG9yeSBhbmQgZGF0YWJhc2UgbG9jYXRpb24Kd29ya2luZ19kaXI8LSIvL25mcy9wYWxtZXItZ3JvdXAtZGF0YS9DaG9wdGFuay9OYXRlL1BUX0RhdGEvMjAxODAxMTJfRG93bmxvYWRzLyIKCiNEb3dubG9hZCBEYXRhCm1hc3RlcjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCJ3ZWxsX2xvZy5jc3YiKSkKCiNDcmVhdGUgdGVtcCBmaWxlCmRpci5jcmVhdGUocGFzdGUwKHdvcmtpbmdfZGlyLCJpbnRlcm1lZGlhdGUiKSkKCiNDb25uZWN0IHRvIGRhdGFiYXNlCmRiIDwtIGRiQ29ubmVjdChQb3N0Z3JlU1FMKCksIAogICAgICAgICAgICAgICAgaG9zdCAgICAgPSAic2VzeW5jLXBvc3RnaXMwMS5yZXNlYXJjaC5zZXN5bmMub3JnIiwKICAgICAgICAgICAgICAgIGRibmFtZSAgID0gImNob3B0YW5rIiwKICAgICAgICAgICAgICAgIHVzZXIgICAgID0gInBhbG1lcmdyb3VwIiwgCiAgICAgICAgICAgICAgICBwYXNzd29yZCA9IHJlYWRsaW5lKHByb21wdD0iRW50ZXIgcGFzc3dvcmQ6ICIpKQpgYGAKCmBgYHtyIGluaXRpYWwtY2hlY2tzLCBlY2hvPUZBTFNFLCByZXN1bHRzPSJoaWRlIn0KI0NoZWNrIHRvIG1ha2Ugc3VyZSBzaXRlIG5hbWVzIGFyZSBpbiBEQi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmE8LWFzLm1hdHJpeChtYXN0ZXJbLCJTaXRlX05hbWUiXSwgbmNvbD0xKQpiPC1nZXRfc2l0ZV9uYW1lc19saWtlKCIgIixkYikjYXMubWF0cml4KGRiR2V0UXVlcnkoZGIsIlNFTEVDVCBTYW1wbGluZ0ZlYXR1cmVDb2RlIEZST00gU2FtcGxpbmdGZWF0dXJlcyIpKQppZihsZW5ndGgoYVshKGEgJWluJSBiKV0pIT0wKXsKICB3YXJuaW5nKHBhc3RlMCgiU2l0ZSBOYW1lcyBpbiBXZWxsIExvZyBhbmQgRGF0YWJhc2UgZG8gbm90IG1hdGNoISEiKSkKICBwcmludChhWyEoYSAlaW4lIGIpXSkKfWVsc2V7CiAgIlNpdGUgTmFtZXMgTWF0Y2ghIgp9CgojQ2hlY2sgdG8gbWFrZSBzdXJlIFNvbmRlIElEIGluIHdlbGwgbG9nIGFuZCBTZXJpYWwgTnVtYmVyIGluIGZpbGVzIG1hdGNoLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZnVuPC1mdW5jdGlvbihuKXsKICAjUmVhZCBkYXRhCiAgdGVtcDwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCJleHBvcnQvIiwgbG9nc1tuXSksIHNraXA9MSkKICAKICAjZXh0cmFjdCBzZXJpYWwgbnVtYmVyCiAgc2VyaWFsX251bWJlcjwtY29sbmFtZXModGVtcClbZ3JlcCgiTEdSIixjb2xuYW1lcyh0ZW1wKSldWzFdICAjRmluZCBjb2xsdW1uIG5hbWUgd2l0aCBzZXJpYWwgbnVtYmVyCiAgc2VyaWFsX251bWJlcjwtc3Vic3RyKHNlcmlhbF9udW1iZXIsICAgI2lzb2xhdGUgc2VyaWFsIG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICBncmVnZXhwcigiU0VOLlMuTiIsc2VyaWFsX251bWJlcilbWzFdXVsxXSs5LCAjU3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgbmNoYXIoc2VyaWFsX251bWJlciktMSkgI3N0b3AKICBzZXJpYWxfbnVtYmVyPC1hcy5udW1lcmljKHNlcmlhbF9udW1iZXIpIAogIAogICNleHBvcnQgc2VyaWFsIG51bWJlcgogIHNlcmlhbF9udW1iZXIKfQojQ3JlYXRlIGxpc3Qgb2YgZmlsZXMgCmxvZ3M8LWxpc3QuZmlsZXMocGFzdGUwKHdvcmtpbmdfZGlyLCJleHBvcnQiKSkKbG9nczwtbG9nc1tsb2dzIT0iYmFyby5jc3YiXQphPC1zYXBwbHkoc2VxKDEsbGVuZ3RoKGxvZ3MpKSwgZnVuKSAgCmI8LW1hc3RlciRTb25kZV9JRCAgCmlmKGxlbmd0aChhWyEoYSAlaW4lIGIpXSkhPTApewogIHdhcm5pbmcocGFzdGUwKCJTb25kZSBzZXJpYWwgbnVtYmVyIGluIFdlbGwgTG9nIGFuZCBkYXRhIGZpbGVzIGRvIG5vdCBtYXRjaCEhIikpCiAgcHJpbnQoYVshKGEgJWluJSBiKV0pCn1lbHNlewogICJTZXJpYWwgTnVtYmVycyBNYXRjaCIKfQoKI0NoZWNrIHVuaXRzIGluIGZpbGVzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNDcmVhdGUgZnVuY3RvaW4gdG8gY2hlY2sgdW5pdHMgaW4gZmlsZQpmdW48LWZ1bmN0aW9uKG4pewogICNEb253bG9hZCBkYXRhCiAgdGVtcDwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCJleHBvcnQvIiwgbG9nc1tuXSksIHNraXA9MSkKICAKICAjQ2hlY2sgcHJlc3N1cmUgdW5pdHMKICBwcmVzc191bml0czwtY29sbmFtZXModGVtcClbZ3JlcCgia1BhIixjb2xuYW1lcyh0ZW1wKSldWzFdIAogIHByZXNzX3VuaXRzPC1zdWJzdHIocHJlc3NfdW5pdHMsICAgI2lzb2xhdGUgdGVtcGVyYXR1cmUgdW5pdHMKICAgICAgICAgICAgICAgICAgICAgZ3JlZ2V4cHIoIkFicy5QcmVzIiwgcHJlc3NfdW5pdHMpW1sxXV1bMV0rMTAsICNTdGFydAogICAgICAgICAgICAgICAgICAgICBncmVnZXhwcigiQWJzLlByZXMiLCBwcmVzc191bml0cylbWzFdXVsxXSsxMikgI3N0b3AKCiAgI0NoZWNrIHRlbXAgdW5pdHMKICB0ZW1wX3VuaXRzPC1jb2xuYW1lcyh0ZW1wKVtncmVwKCJUZW1wIixjb2xuYW1lcyh0ZW1wKSldWzFdIAogIHRlbXBfdW5pdHM8LXN1YnN0cih0ZW1wX3VuaXRzLCAgICNpc29sYXRlIHRlbXBlcmF0dXJlIHVuaXRzCiAgICAgICAgICAgICAgICAgICAgIGdyZWdleHByKCJUZW1wIiwgdGVtcF91bml0cylbWzFdXVsxXSs3LCAjU3RhcnQKICAgICAgICAgICAgICAgICAgICAgZ3JlZ2V4cHIoIlRlbXAiLCB0ZW1wX3VuaXRzKVtbMV1dWzFdKzcpICNzdG9wCiAgCiAgI1ByaW50IHVuaXRzCiAgZGF0YS5mcmFtZShmaWxlbmFtZT1sb2dzW25dLCAKICAgICAgICAgICAgIHByZXNzdXJlPXByZXNzX3VuaXRzLCAKICAgICAgICAgICAgIHRlbXBlcmF0dXJlPXRlbXBfdW5pdHMpCn0KeDwtbGFwcGx5KHNlcSgxLCBsZW5ndGgobG9ncykpLCBmdW4pCng8LWRhdGEuZnJhbWUoZG8uY2FsbChyYmluZCx4KSkKcHJpbnQoeCkKYGBgCgpgYGB7ciBwdC1kYXRhLXdyYW5nbGluZywgZWNobz1GQUxTRSwgcmVzdWx0cz0iaGlkZSJ9CiNjcmVhdGUgZnVuY3Rpb24gdG8gZG93bmxvYWQgbG9ncywgY2xlYW4sIGFuZCByZXdyaXRlIGluIHRlbXAgZm9sZGVyCmZ1bjwtZnVuY3Rpb24obil7CiAgI1NldHVwfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogICNSZWFkIGRhdGEKICBkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCJleHBvcnQvIiwgbG9nc1tuXSksIHNraXA9MSkKICAKICAjRGVmaW5lIHNlcmlhbCBudW1iZXIKICBzZXJpYWxfbnVtYmVyPC1jb2xuYW1lcyhkZilbZ3JlcCgiTEdSIixjb2xuYW1lcyhkZikpXVsxXSAgI0ZpbmQgY29sbHVtbiBuYW1lIHdpdGggc2VyaWFsIG51bWJlcgogIHNlcmlhbF9udW1iZXI8LXN1YnN0cihzZXJpYWxfbnVtYmVyLCAgICNpc29sYXRlIHNlcmlhbCBudW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZ2V4cHIoIlNFTi5TLk4iLHNlcmlhbF9udW1iZXIpW1sxXV1bMV0rOSwgI1N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgIG5jaGFyKHNlcmlhbF9udW1iZXIpLTEpICNzdG9wCiAgc2VyaWFsX251bWJlcjwtYXMubnVtZXJpYyhzZXJpYWxfbnVtYmVyKSAKICAKICAjRGV0ZXJtaW5lIHRpbWV6b25lIG9mZnNldCBpbiBzZWNvbmRzCiAgdGltZV9vZmZzZXQ8LWNvbG5hbWVzKGRmKVtncmVwKCJHTVQiLGNvbG5hbWVzKGRmKSldICAjR3JhYiBjb2xsdW1uIG5hbWUgdy8gdGltZSBvZmZzZXQKICB0aW1lX29mZnNldDwtYXMubnVtZXJpYyhzdWJzdHIodGltZV9vZmZzZXQsIDE2LDE4KSkqMzYwMCthcy5udW1lcmljKHN1YnN0cih0aW1lX29mZnNldCwgMTksMjApKSo2MAogIAogICNEZWZpbmUgdmFyaWFibGVzIGZyb20gd2VsbCBsb2cKICBzaXRlX25hbWU8LW1hc3RlciRTaXRlX05hbWVbbWFzdGVyJFNvbmRlX0lEPT1zZXJpYWxfbnVtYmVyXQogIGRlcGxveW1lbnQ8LXN0cnB0aW1lKHBhc3RlKG1hc3RlciREYXRlW21hc3RlciRTb25kZV9JRD09c2VyaWFsX251bWJlcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzdGVyJFRpbWVbbWFzdGVyJFNvbmRlX0lEPT1zZXJpYWxfbnVtYmVyXSksIAogICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iJW0vJWQvJVkgJUg6JU0iLCB0ej0iR01UIikKICBkZXBsb3ltZW50PC1kZXBsb3ltZW50LXRpbWVfb2Zmc2V0CiAgcmVsYXRpdmVfd2w8LW1hc3RlciRSZWxhdGl2ZV9XYXRlcl9MZXZlbF9tW21hc3RlciRTb25kZV9JRD09c2VyaWFsX251bWJlcl0KICBiYXJvX2ZpbGU8LW1hc3RlciRiYXJvX2ZpbGVbbWFzdGVyJFNvbmRlX0lEPT1zZXJpYWxfbnVtYmVyXQogIAogICN3YXRlciBsZXZlbCB0aW1lIHNlcmVpc35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogICNzdWJzZXQgZGF0YWZyYW1lIHRvIHRlbXAsIGFic19wcmVzLCBhbmQgdGVtcAogIGRmPC1kZlssYygyLDMsNCldCiAgY29sbmFtZXMoZGYpPC1jKCJUaW1lc3RhbXAiLCAicHJlc3N1cmVBYnNvbHV0ZSIsICJ0ZW1wX2MiKQogIAogICNmb3JtYXQgZGF0ZV90aW1lCiAgZGYkVGltZXN0YW1wPC1zdHJwdGltZShkZiRUaW1lc3RhbXAsICIlbS8lZC8leSAlSTolTTolUyAlcCIpLXRpbWVfb2Zmc2V0CiAgZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKICAKICAjYmFybyBmaWxlIHRpbWUgc2VyaWVzfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAgI1N1YnNldCBkYXRhZnJhbWUgdG8gdGVtcCwgYWJzX3ByZXMsIGFuZCB0ZW1wCiAgYmFybzwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCJleHBvcnQvIiwgYmFyb19maWxlKSwgc2tpcD0xKQogIGJhcm88LWJhcm9bLGMoMiwzLDQpXQogIGNvbG5hbWVzKGJhcm8pPC1jKCJUaW1lc3RhbXAiLCAiYmFyb21ldHJpY1ByZXNzdXJlIiwgInRlbXBfYyIpCiAgCiAgI2Zvcm1hdCBkYXRlIGFuZCB0aW1lCiAgYmFybyRUaW1lc3RhbXA8LXN0cnB0aW1lKGJhcm8kVGltZXN0YW1wLCAiJW0vJWQvJXkgJUk6JU06JVMgJXAiKS10aW1lX29mZnNldAogIGJhcm8kVGltZXN0YW1wPC1hcy5QT1NJWGN0KGJhcm8kVGltZXN0YW1wKQogIAogICNDYWNsdWN1bGF0ZSB3YXRlcmxldmVsfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogICNjcmVhdGUgYmFybyBpbnRlcnBvbGF0aW9uIGZ1bmN0aW9uCiAgYmFyb19mdW48LWFwcHJveGZ1bihiYXJvJFRpbWVzdGFtcCwgYmFybyRiYXJvbWV0cmljUHJlc3N1cmUpCiAgCiAgI2NhbGN1bGF0ZSBiYXJvIGZvciBlYWNoIGRmIHRpbWUgc3RlcAogIGRmJGJhcm9tZXRyaWNQcmVzc3VyZTwtYmFyb19mdW4oZGYkVGltZXN0YW1wKQogIAogICNDYWNsdWF0ZSBnYWdlIHByZXNzdXJlCiAgZGYkcHJlc3N1cmVHYXVnZTwtZGYkcHJlc3N1cmVBYnNvbHV0ZS1kZiRiYXJvbWV0cmljUHJlc3N1cmUKICAKICAjQ2FsY3VsYXRlIHJlbGF0aXZlIHdhdGVyIGxldmVsCiAgZGYkZ2FnZUhlaWdodDwtZGYkcHJlc3N1cmVHYXVnZS85LjgxCiAgCiAgI1dhdGVyIExldmVsCiAgZGYkd2F0ZXJMZXZlbDwtZGYkZ2FnZUhlaWdodCtyZWxhdGl2ZV93bAogIAogICNQcnVuZSB3YXRlciBsZXZlbCBiYXNlZCBvbiBkZXBsb3ltZW50IHRpbWUKICBkZjwtZGZbZGYkVGltZXN0YW1wPGRlcGxveW1lbnQsXQogIGRmPC1uYS5vbWl0KGRmKQogIAogICNhZGQgIm9mZnNldCBjb2xsdW1uIgogIGRmJG9mZnNldDwtMAogIAogICNkZWxldGUgcG90ZW50aWFsIGR1cGxpY2F0ZXMKICBkZjwtZGZbIWR1cGxpY2F0ZWQoZGYpLF0KICAKICAjV3JpdGUgZGYgdG8gdGVtcCBmaWxlCiAgd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsImludGVybWVkaWF0ZS8iLCBzZXJpYWxfbnVtYmVyLCIuY3N2IikpCn0KCiNDcmVhdGUgbGlzdCBvZiBQVCBmaWxlcwpsb2dzPC1saXN0LmZpbGVzKHBhc3RlMCh3b3JraW5nX2RpciwiZXhwb3J0IikpCmxvZ3M8LWxvZ3NbbG9ncyE9ImJhcm8uY3N2Il0KCiNjcmVhdGUgdGVtcCBmaWxlIHRvIHN0b3JlIGludGVybWVkaWF0ZSBmaWxlcwpkaXIuY3JlYXRlKHBhc3RlMCh3b3JraW5nX2RpciwiaW50ZXJtZWRpYXRlIikpCgojUnVuIGZ1bmN0aW9uIApsYXBwbHkoc2VxKDEsIGxlbmd0aChsb2dzKSksIGZ1bikKYGBgCgojV2F0ZXIgTGV2ZWwgUUFRQwpgYGB7ciB0c19wbG90IGZ1bmN0aW9uLCBlY2hvPUZBTFNFLCByZXN1bHRzPSJoaWRlIn0KZnVuPC1mdW5jdGlvbihuKXsKICAjUmVhZCBkZgogIGRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKICBkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQogIGRmJHdhdGVyTGV2ZWw8LWRmJHdhdGVyTGV2ZWwqMTAwKzEwMDAgCiAgCiAgI3B1bGwgd2F0ZXIgbGV2ZWwgZnJvbSBkYXRhYmFzZQogIGRmX2hpc3RvcmljPC1OVUxMI2RiX2dldF93YXRlcl9sZXZlbF90cyhkYixwYXN0ZShtYXN0ZXIkU2l0ZV9OYW1lW25dKSkKICAKICAjRm9ybWF0IGRmCiAgaWYobGVuZ3RoKGRmX2hpc3RvcmljKT09MCl7CiAgICBkZiA8LSBkZiAlPiUgc2VsZWN0KFRpbWVzdGFtcCwgd2F0ZXJMZXZlbCkKICAgIGRmX3h0czwteHRzKGRmLCBvcmRlci5ieT1kZiRUaW1lc3RhbXApCiAgICBkZl94dHM8LWRmX3h0c1ssLTFdCiAgfWVsc2V7CiAgICAjYWRkIGRhdHVtIGNvcnJlY3Rpb24gdG8gZGZfaGlzdG9yaWMKICAgIGRmIDwtIGRmICU+JSBzZWxlY3QoVGltZXN0YW1wLCB3YXRlckxldmVsKQogICAgZGZfaGlzdG9yaWMkd2F0ZXJMZXZlbDwtZGZfaGlzdG9yaWMkd2F0ZXJMZXZlbCoxMDArMTAwMCAgCiAgICBkZl9oaXN0b3JpYzwtZGZfaGlzdG9yaWNbLGMoIlRpbWVzdGFtcCIsIndhdGVyTGV2ZWwiKV0KICAgIGRmX2hpc3RvcmljJGdyb3VwPC0ib2xkIgogICAgZGYkZ3JvdXA8LSJuZXciCiAgICBkZjwtcmJpbmQoZGZfaGlzdG9yaWMsIGRmKQogICAgZGZfc3ByZWFkIDwtIGRmICU+JSAKICAgICAgIGRwbHlyOjpzZWxlY3QoVGltZXN0YW1wLCBncm91cCwgd2F0ZXJMZXZlbCkgJT4lCiAgICAgICB0aWR5cjo6c3ByZWFkKGtleSA9IGdyb3VwLCB2YWx1ZSA9IHdhdGVyTGV2ZWwpCiAgICBkZl94dHM8LXh0cyhkZl9zcHJlYWQsIG9yZGVyLmJ5PWRmX3NwcmVhZCRUaW1lc3RhbXApCiAgICBkZl94dHM8LWRmX3h0c1ssLTFdCiAgICB9CiAgCiAgI1Bsb3QKICB0c19wbG90PC1keWdyYXBoKGRmX3h0cywgbWFpbj1tYXN0ZXIkU2l0ZV9OYW1lW25dKSAlPiUKICAgICAgICAgICAgICBkeVJhbmdlU2VsZWN0b3IoKSAlPiUKICAgICAgICAgICAgICBkeUxlZ2VuZCgpICU+JQogICAgICAgICAgICAgIGR5T3B0aW9ucyhzdHJva2VXaWR0aCA9IDEuNSkgJT4lCiAgICAgICAgICAgICAgZHlPcHRpb25zKGxhYmVsc1VUQyA9IFRSVUUpICU+JQogICAgICAgICAgICAgIGR5SGlnaGxpZ2h0KGhpZ2hsaWdodENpcmNsZVNpemUgPSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRTZXJpZXNCYWNrZ3JvdW5kQWxwaGEgPSAwLjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVPbk1vdXNlT3V0ID0gRkFMU0UpICU+JQogICAgICAgICAgICAgIGR5QXhpcygieSIsIGxhYmVsID0gIldhdGVyIExldmVsIFtjbV0iKQogIAogICNFeHBvcnQgUGxvdAogIHJldHVybih0c19wbG90KQp9CmBgYAoKIyNOQiBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MQoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjSkIgVXBsYW5kIFdlbGwgMQpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MgoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjSkIgVXBsYW5kIFdlbGwgMgpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MwoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjSkIgV2V0bGFuZCBXZWxsIFNoYWxsb3cKVGhpcyBpcyBwcmVsaW1pbmFyeSBkYXRhIGFuZCB3aWxsIHVuZGVyZ28gbW9yZSByaWd1cm91cyBRQVFDIGF0IGEgbGF0ZXIgZGF0ZS4gCmBgYHtyLCBlY2hvPUZBTFNFfQojbG9nIG51bWJlcgpuPTQKCiNSZWFkIGRmCmRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKCiNFZGl0cwojZGY8LWRmWyEoZGYkVGltZXN0YW1wPmFzLlBPU0lYY3QoIjIwMTctMDktMjcgMDQ6MDAgVVRDIikgJiBkZiRUaW1lc3RhbXA8YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAxMTowMCBVVEMiKSksXQoKI2V4cG9ydCB1cGRhdGVkIGNzdgojd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKCiNDcmVhdGUgUGxvdApmdW4obikKYGBgCgojI0pDIFdldGxhbmQgV2VsbCBTaGFsbG93ClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj01CgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNKQyBVcGxhbmQgV2VsbCAxClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj02CgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNKQSBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49NwoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjSm9uZXMgUm9hZCBOb3J0aCBDYXRjaG1lbnQgT3V0bGV0ClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj04CgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNEViBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49OQoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjRGVudmVyIENhdGNobWVudCBPdXRsZXQKVGhpcyBpcyBwcmVsaW1pbmFyeSBkYXRhIGFuZCB3aWxsIHVuZGVyZ28gbW9yZSByaWd1cm91cyBRQVFDIGF0IGEgbGF0ZXIgZGF0ZS4gCmBgYHtyLCBlY2hvPUZBTFNFfQojbG9nIG51bWJlcgpuPTEwCgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNHQiBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MTEKCiNSZWFkIGRmCmRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKCiNFZGl0cwojZGY8LWRmWyEoZGYkVGltZXN0YW1wPmFzLlBPU0lYY3QoIjIwMTctMDktMjcgMDQ6MDAgVVRDIikgJiBkZiRUaW1lc3RhbXA8YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAxMTowMCBVVEMiKSksXQoKI2V4cG9ydCB1cGRhdGVkIGNzdgojd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKCiNDcmVhdGUgUGxvdApmdW4obikKYGBgCgoKIyNKVSBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MTIKCiNSZWFkIGRmCmRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKCiNFZGl0cwojZGY8LWRmWyEoZGYkVGltZXN0YW1wPmFzLlBPU0lYY3QoIjIwMTctMDktMjcgMDQ6MDAgVVRDIikgJiBkZiRUaW1lc3RhbXA8YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAxMTowMCBVVEMiKSksXQoKI2V4cG9ydCB1cGRhdGVkIGNzdgojd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKCiNDcmVhdGUgUGxvdApmdW4obikKYGBgCgojI1RJIFdldGxhbmQgV2VsbCBTaGFsbG93ClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj0xMwoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjU29sdXRlIENhdGNobWVudCBPdXRsZXQKVGhpcyBpcyBwcmVsaW1pbmFyeSBkYXRhIGFuZCB3aWxsIHVuZGVyZ28gbW9yZSByaWd1cm91cyBRQVFDIGF0IGEgbGF0ZXIgZGF0ZS4gCmBgYHtyLCBlY2hvPUZBTFNFfQojbG9nIG51bWJlcgpuPTE0CgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNTQiBXZXRsYW5kIFdlbGwgU2hhbGxvdwpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MTUKCiNSZWFkIGRmCmRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKCiNFZGl0cwojZGY8LWRmWyEoZGYkVGltZXN0YW1wPmFzLlBPU0lYY3QoIjIwMTctMDktMjcgMDQ6MDAgVVRDIikgJiBkZiRUaW1lc3RhbXA8YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAxMTowMCBVVEMiKSksXQoKI2V4cG9ydCB1cGRhdGVkIGNzdgojd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKCiNDcmVhdGUgUGxvdApmdW4obikKYGBgCgojI0RGIFdldGxhbmQgV2VsbCBTaGFsbG93ClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj0xNgoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjUUIgVXBsYW5kIFdlbGwgMgpUaGlzIGlzIHByZWxpbWluYXJ5IGRhdGEgYW5kIHdpbGwgdW5kZXJnbyBtb3JlIHJpZ3Vyb3VzIFFBUUMgYXQgYSBsYXRlciBkYXRlLiAKYGBge3IsIGVjaG89RkFMU0V9CiNsb2cgbnVtYmVyCm49MTcKCiNSZWFkIGRmCmRmPC1yZWFkLmNzdihwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKZGYkVGltZXN0YW1wPC1hcy5QT1NJWGN0KGRmJFRpbWVzdGFtcCkKCiNFZGl0cwojZGY8LWRmWyEoZGYkVGltZXN0YW1wPmFzLlBPU0lYY3QoIjIwMTctMDktMjcgMDQ6MDAgVVRDIikgJiBkZiRUaW1lc3RhbXA8YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAxMTowMCBVVEMiKSksXQoKI2V4cG9ydCB1cGRhdGVkIGNzdgojd3JpdGUuY3N2KGRmLCBwYXN0ZTAod29ya2luZ19kaXIsICJpbnRlcm1lZGlhdGUvIixtYXN0ZXIkU29uZGVfSURbbl0sIi5jc3YiKSkKCiNDcmVhdGUgUGxvdApmdW4obikKYGBgCgojI1FCIFdldGxhbmQgV2VsbCBEZWVwClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj0xOAoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiMjUUIgV2V0bGFuZCBXZWxsIFNoYWxsb3cKVGhpcyBpcyBwcmVsaW1pbmFyeSBkYXRhIGFuZCB3aWxsIHVuZGVyZ28gbW9yZSByaWd1cm91cyBRQVFDIGF0IGEgbGF0ZXIgZGF0ZS4gCmBgYHtyLCBlY2hvPUZBTFNFfQojbG9nIG51bWJlcgpuPTE5CgojUmVhZCBkZgpkZjwtcmVhZC5jc3YocGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCmRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgojRWRpdHMKI2RmPC1kZlshKGRmJFRpbWVzdGFtcD5hcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDA0OjAwIFVUQyIpICYgZGYkVGltZXN0YW1wPGFzLlBPU0lYY3QoIjIwMTctMDktMjcgMTE6MDAgVVRDIikpLF0KCiNleHBvcnQgdXBkYXRlZCBjc3YKI3dyaXRlLmNzdihkZiwgcGFzdGUwKHdvcmtpbmdfZGlyLCAiaW50ZXJtZWRpYXRlLyIsbWFzdGVyJFNvbmRlX0lEW25dLCIuY3N2IikpCgojQ3JlYXRlIFBsb3QKZnVuKG4pCmBgYAoKIyNRQiBVcGxhbmQgV2VsbCAxClRoaXMgaXMgcHJlbGltaW5hcnkgZGF0YSBhbmQgd2lsbCB1bmRlcmdvIG1vcmUgcmlndXJvdXMgUUFRQyBhdCBhIGxhdGVyIGRhdGUuIApgYGB7ciwgZWNobz1GQUxTRX0KI2xvZyBudW1iZXIKbj0yMAoKI1JlYWQgZGYKZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQpkZiRUaW1lc3RhbXA8LWFzLlBPU0lYY3QoZGYkVGltZXN0YW1wKQoKI0VkaXRzCiNkZjwtZGZbIShkZiRUaW1lc3RhbXA+YXMuUE9TSVhjdCgiMjAxNy0wOS0yNyAwNDowMCBVVEMiKSAmIGRmJFRpbWVzdGFtcDxhcy5QT1NJWGN0KCIyMDE3LTA5LTI3IDExOjAwIFVUQyIpKSxdCgojZXhwb3J0IHVwZGF0ZWQgY3N2CiN3cml0ZS5jc3YoZGYsIHBhc3RlMCh3b3JraW5nX2RpciwgImludGVybWVkaWF0ZS8iLG1hc3RlciRTb25kZV9JRFtuXSwiLmNzdiIpKQoKI0NyZWF0ZSBQbG90CmZ1bihuKQpgYGAKCiNEYXRhYmFzZSBJbXBvcnQKYGBge3IgZGF0YWJhc2UgaW1wb3J0LCBlY2hvPUZBTFNFfQojQ3JlYXRlIGZ1bmN0aW9uCmZ1bjwtZnVuY3Rpb24obil7CiAgI0Rvd25sb2FkIGludGVybWVkaWF0ZSB0cyBkYXRhCiAgZGY8LXJlYWQuY3N2KHBhc3RlMCh3b3JraW5nX2RpciwiaW50ZXJtZWRpYXRlLyIsIGxvZ3Nbbl0pKQogIGRmPC1kZlssYygiVGltZXN0YW1wIiwid2F0ZXJMZXZlbCIpXQogIGRmJFRpbWVzdGFtcDwtYXMuUE9TSVhjdChkZiRUaW1lc3RhbXApCgogICNTb25kZSBJRAogIHNuPC1hcy5udW1lcmljKHN1YnN0cihsb2dzW25dLCAxLG5jaGFyKGxvZ3Nbbl0pLTQpKQogIAogICNDcmVhdGUgdmFyaWFibGUgbGlzdAogIHZhcnNfbGlzdDwtbGlzdCgjInByZXNzdXJlQWJzb2x1dGUiICAgID0gbGlzdChjb2x1bW4gPSAicHJlc3N1cmVBYnNvbHV0ZSIsICAgdW5pdHMgPSAiS1BhIiksCiAgICAgICAgICAgICAgICAgICMiYmFyb21ldHJpY1ByZXNzdXJlIiAgPSBsaXN0KGNvbHVtbiA9ICJiYXJvbWV0cmljUHJlc3N1cmUiLCB1bml0cyA9ICJLUGEiKSwKICAgICAgICAgICAgICAgICAgIyJwcmVzc3VyZUdhdWdlIiAgICAgICA9IGxpc3QoY29sdW1uID0gInByZXNzdXJlR2F1Z2UiLCAgICAgIHVuaXRzID0gIktQYSIpLAogICAgICAgICAgICAgICAgICAjImdhZ2VIZWlnaHQiICAgICAgICAgID0gbGlzdChjb2x1bW4gPSAiZ2FnZUhlaWdodCIsICAgICAgICAgdW5pdHMgPSAiTWV0ZXIiKSwKICAgICAgICAgICAgICAgICAgIldhdGVyIGxldmVsIiAgICAgICAgICA9IGxpc3QoY29sdW1uID0gIndhdGVyTGV2ZWwiLCAgICAgICAgIHVuaXRzID0gIk1ldGVyIikpIywKICAgICAgICAgICAgICAgICAgIyJvZmZzZXQiICAgICAgICAgICAgICA9IGxpc3QoY29sdW1uID0gIm9mZnNldCIsICAgICAgICAgICAgIHVuaXRzID0gIk1ldGVyIikpCgogICNJbnNlcnQgZGF0YSBpbnRvIGRhdGFiYXNlCiAgdDA8LVN5cy50aW1lKCkKICBkYl9pbnNlcnRfcmVzdWx0c190cyhkYiA9IGRiLCAjIGRhdGFiYXNlIGNvbm5lY3RvbgogICAgICAgICAgICAgICAgICAgICAgIGRhdGF2YWx1ZXMgPSBkZiwgIyBkYXRhIGZyYW1lIG9mIHRpbWUgc2VyaWVzIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSAiUFRfRG93bmxvYWQiLAogICAgICAgICAgICAgICAgICAgICAgIHNpdGVfY29kZSA9IGFzLmNoYXJhY3RlcihtYXN0ZXIkU2l0ZV9OYW1lW21hc3RlciRTb25kZV9JRD09c25dKSwKICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJzX2xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlZG1lZGl1bSA9ICJMaXF1aWQgYXF1ZW91cyIsCiAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uYnkgPSAiTmF0ZSIsIAogICAgICAgICAgICAgICAgICAgICAgIGVxdWlwbWVudF9uYW1lID0gYXMuY2hhcmFjdGVyKG1hc3RlciRTb25kZV9JRFttYXN0ZXIkU29uZGVfSUQ9PXNuXSkpCiAgdGY8LVN5cy50aW1lKCkKICB0Zi10MAp9CgojQ3JlYXRlIGxpc3Qgb2YgaW50ZXJtZWRpYXRlIGZpbGVzCmxvZ3M8LWxpc3QuZmlsZXMocGFzdGUwKHdvcmtpbmdfZGlyLCJpbnRlcm1lZGlhdGUiKSkKbG9nczwtbG9nc1tsb2dzIT1wYXN0ZTAobWFzdGVyJFNvbmRlX0lEW21hc3RlciRTaXRlX05hbWU9PSJHcmVnIENhdGNobWVudCBPdXRsZXQiXSwiLmNzdiIpXQpsb2dzPC1sb2dzW2xvZ3MhPXBhc3RlMChtYXN0ZXIkU29uZGVfSURbbWFzdGVyJFNpdGVfTmFtZT09IkRvZ2JvbmUgQ2F0Y2htZW50IE91dGxldCJdLCIuY3N2IildCmxvZ3M8LWxvZ3NbbG9ncyE9cGFzdGUwKG1hc3RlciRTb25kZV9JRFttYXN0ZXIkU2l0ZV9OYW1lPT0iU29sdXRlIENhdGNobWVudCBPdXRsZXQiXSwiLmNzdiIpXQoKI1J1biBmdW5jdGlvbgp0MDwtU3lzLnRpbWUoKQpmb3IoaSBpbiAxOmxlbmd0aChsb2dzKSl7CiAgcHJpbnQoaSkKICBmdW4oaSkKfQp0ZjwtU3lzLnRpbWUoKQp0Zi10MAoKI0Rpc2Nvbm5lY3QgZnJvbSBEQgpkYkRpc2Nvbm5lY3QoZGIpCmBgYAo=